NT service - jak na to ?

Otázka od: Jiri Betunak

23. 8. 2004 11:03

Zdravim konference,

Pisi si servis app pro win XP je to neco jako jednoduchy ftp server .
No a narazil jsem na problem s kterym si vubec ale vubec nevim rady, tak
bych Vas chtel pozadat o pomoc

Popis problemu:
 - pokud muj servis jede lze se na nej bez problemu pripojit ale pouze s
mojeho stroje tjst s localhostu
 - Nevite tedy nekdo pls jak ho donutit aby chodil i na ip adresu meho
stroje ? tj aby se na nej slo pripojit i s jine masiny ?
{
- A pokud aplikaci predelam do klasicke win32 app tak to ftp jede v pohode
a bez problemu
}

Predem diky za jakoukoliv radu

Jiri B.
WinXP,Delphi 7



Odpovedá: Jiri Sedivec

23. 8. 2004 11:19

----- Original Message -----
Subject: NT service - jak na to ?
> - Nevite tedy nekdo pls jak ho donutit aby chodil i na ip adresu meho
> stroje ? tj aby se na nej slo pripojit i s jine masiny ?
> {
> - A pokud aplikaci predelam do klasicke win32 app tak to ftp jede v pohode
> a bez problemu
> }

Pod jakym uctem ti Service bezi?
Neblokuje ti to Firewall - bud tveho pocitace - nebo okolnich pocitacu?


Odpovedá: Jiri Sedivec

23. 8. 2004 11:15

Dovolim si jeste citovat z jednoho e-mailu - z jine konference. Kdysi davno
mi pod Service nefungovalo nasdileni slozek - Petr Lazecky mi neco malo
napsal o tom jak se vlastne Service chova. Docela uzitecny text - alespon
pro me:
==============
Snazim se na toto tema sesmolit nekolik clanecku protoze mam pocit ze tema
security je zde probirano pomerne casto. LocalSystem je velmi silny ucet na
lokalni stanici (ucet se silou administratora) ale s minimalnimi pravy na
siti. V praxi to znamena nekolik problemu. Napriklad, vy jste na pocitaci
prihlasen pod svym uctem. Napisete aplikaci a vse funguje jak ma. Vase
aplikace zapisuje neco do registry pod HKCU (HK Current User). Zaroven Vase
aplikace pristupuje na jine pocitace na siti.

Jakmile zapouzdrite tuto aplikaci pod Windows NT service bezici jako
LocalSystem tak bezite v kontextu uplne jineho uzivatele s uplne jinymi
pravy. Obecne by to tedy nemel byt problem na lokalni stanici protoze
LocalSystem je velmi silny ucet. Ale...

LocalSystem neuvidi Vas HKCU vetev v registry. Takze cokoliv tam zapisujete
ci ctete je nedostupne. Pristup po siti je mozny pokud na cilove stanici
povolite pristup pro ucet MACHINE$ (kde MACHINE je jmeno pocitace na kterem
bezi Vase service). To funguje pouze na W2K a vyssi. Na NT 4.0 to nefunguje
protoze na tomto systemu nelze priradit prava uctu "pocitac" zatimco na W2K
je pocitacovy ucet ucet jako kazdy jiny. Obecne, pristup na sit jako
LocalSystem bude vzdy problematicky a bude vyzadovat jiste usili na strane
aplikace vzhledem k "sile" LocalSystem na siti.

Dale, LocalSystem "neuvidi" veskere namapovane sitove spojeni ktere vidite
Vy pri vyvoji Vasi aplikace. Pokud pristupujete k souborum ke kterym nema
LocalSystem prava (napriklad nejake Vami vytvorene soubory) tak to
samozrejme selze opet. Podobne problemy zazijete pri pouziti certifikatu z
certificate store protoze certificate store je opet mapovan pro kazdeho
uzivatele zvlast. Stejne pro MAPI profily, pripojene tiskarny, DNS pripojeni
a buh vi co jeste.

Dalsi zajimave problemy souvisi s faktem ze LocalSystem bezi ve sve vlastni
windows station. V praxi to napriklad znamena ze neuvidite zadny dialogovy
box ktery Vase aplikace zobrazi a tutiz neni jak tento dialogovy box
odmacknout a tutiz Vas program sedi a ceka a nic nedela... Zde ja navaznost
na debugging sluzeb bezicich pod LocalSystem. Stejny problem. Pokud
napriklad chcete debugovat Vasi NT service v dobe inicializace ( a tudiz
neni mozne pouzit Attach to...) tak se debugger sice spusti ale opet nebude
videt protoze pobezi v uplne jine window station. Sice uvidite debugger v
Windows NT Task Manageru ale to je tak vse. Problem debugovani resi volba
"Allow service interact with desktop" (doporucuji pouze pro debogovani, pak
vypnout protoze se jedna o bezpecnosti vrata, ne diru). Problem message boxu
musite vyresit Vy napriklad logovanim do event logu.

Jak vidite, LocalSystem ma sva kouzla... A to vse co jsem tu zminil "jenom"
kvuli bezpecnosti...

Petr Lazecky,
Microsoft